ngrokトンネルのリージョンを選択する
ども、大瀧です。
ローカルホストのサービスを手軽にインターネットに公開できるngrokが複数のリージョンでホストされるようになったので、試してみた様子をレポートします。
ngrokとは
ngrokは、ファイヤーウォールやNATによってインターネットから直接アクセスできないホストで実行するWebアプリケーションを、トンネルサーバー経由でインターネットに公開することができます。
具体的には、ローカルホストで実行するCLIツールとXXXX.ngrok.comでアクセスできるHTTP/TCPトンネルをホストするトンネルサーバーで構成されるサービスです。開発環境やデモ用途として、とても便利な仕組みですね。
従来はトンネルサーバーが北米のみで提供されていたため、日本で実行するとトラフィックは毎回太平洋を往復していました。先月末にグローバルリージョンがアナウンスされ、ヨーロッパ、アジア、オーストラリアリージョンに拡充されました。
リージョンの指定方法
リージョンを指定するためには、ngrok
コマンドに-region
オプションを付与します。リージョンとオプションとの対応は以下です。
- United States(デフォルト):
us
- Europe:
eu
- Asia Pacific:
ap
- Australia:
au
では、United StatesリージョンとAsia Pacificリージョンを指定した場合で、トンネルサーバーまでのレイテンシを測ってみます。まずはデフォルトのUSから。
$ ngrok http 192.168.99.100:80 <ngrokのコンソールが表示、URLを確認する>
$ ping 7e152b2b.ngrok.io PING 7e152b2b.ngrok.io (173.255.197.142): 56 data bytes 64 bytes from 173.255.197.142: icmp_seq=0 ttl=47 time=150.654 ms 64 bytes from 173.255.197.142: icmp_seq=1 ttl=47 time=150.016 ms 64 bytes from 173.255.197.142: icmp_seq=2 ttl=47 time=147.429 ms 64 bytes from 173.255.197.142: icmp_seq=3 ttl=47 time=146.592 ms 64 bytes from 173.255.197.142: icmp_seq=4 ttl=47 time=152.962 ms ^C --- 7e152b2b.ngrok.io ping statistics --- 5 packets transmitted, 5 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 146.592/149.531/152.962/2.295 ms $
レイテンシは概ね150ms程度でしょうか。続いて-region
オプションにap
を指定し、アジアリージョンで試してみます。
$ ngrok http -region=ap 192.168.99.100:80 <ngrokのコンソールが表示、URLを確認する>
$ ping 3f98daf3.ap.ngrok.io PING 3f98daf3.ap.ngrok.io (52.76.246.79): 56 data bytes 64 bytes from 52.76.246.79: icmp_seq=0 ttl=51 time=89.022 ms 64 bytes from 52.76.246.79: icmp_seq=1 ttl=51 time=91.187 ms 64 bytes from 52.76.246.79: icmp_seq=2 ttl=51 time=89.184 ms 64 bytes from 52.76.246.79: icmp_seq=3 ttl=51 time=91.275 ms 64 bytes from 52.76.246.79: icmp_seq=4 ttl=51 time=88.284 ms ^C --- 3f98daf3.ap.ngrok.io ping statistics --- 5 packets transmitted, 5 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 88.284/89.790/91.275/1.215 ms $
こちらは100ms弱と、レイテンシが小さいことがわかりますね!トンネルサーバーとしての仕様に特に差異はなさそうですので、今後は積極的にアジアリージョンを使ってよさそうです。ngrokの設定ファイルに記述しておくと、-region
オプションを省略することもできます。
region: ap
参考 ngrokのデータセンター
割り当てられるグローバルIPを逆引きすると、ngrokがホストされているデータセンターが推測できます。
$ host 173.255.197.142 142.197.255.173.in-addr.arpa domain name pointer li207-142.members.linode.com. $ host 52.76.246.79 79.246.76.52.in-addr.arpa domain name pointer ec2-52-76-246-79.ap-southeast-1.compute.amazonaws.com. $ host 52.29.162.141 141.162.29.52.in-addr.arpa domain name pointer ec2-52-29-162-141.eu-central-1.compute.amazonaws.com. $ host 52.64.70.216 216.70.64.52.in-addr.arpa domain name pointer ec2-52-64-70-216.ap-southeast-2.compute.amazonaws.com.
USはLinode、それ以外はAWSであることがわかりますね。ngrokのドキュメントによると、ヨーロッパリージョンはフランクフルトからイギリスに移動するかも。とあるので、AWSロンドンリージョンのオープンに合わせて動きがありそうですね。
まとめ
ngrokに新しく追加された複数リージョンサポートの様子をレポートしました。アジアは現在はシンガポールリージョンでの提供なので、東京リージョンをリクエストするともしかしたら実現されるかもしれないですね。